package com.ch01.server;

import jakarta.websocket.OnClose;
import jakarta.websocket.OnMessage;
import jakarta.websocket.OnOpen;
import jakarta.websocket.Session;
import jakarta.websocket.server.ServerEndpoint;

import java.io.IOException;


/**
 * @ClassName WebSocket
 * @Description TODO
 * @Author Kx
 * @Date 2025/9/18 9:45
 * @Version 1.0
 */
@ServerEndpoint("/connect")
public class WebSocket {

    /**
     * @author: kx
     * @date: 2025/9/18 11:18
     * @param session : 会话
     * @description: 客户端连接时调用此方法
     * Session 是由 web 服务器为每一个连接的客户端创建的唯一会话，这个参数非常重要，用于服务端区分不同的客户端进行通信
    */
    @OnOpen
    public void onOpen(Session session) {
        System.out.println("websocket 连接已打开");
    }

    /**
     * @author: kx
     * @date: 2025/9/18 11:20
     * @param message : 消息
     * @param session : 会话
     * @description: 当接收到客户端发送的消息时调用此方法
    */
    @OnMessage
    public void onMessage(String message, Session session) throws IOException {
        System.out.println("收到消息：" + message);
        // 通过 session 对象发送消息个客户端
        session.getBasicRemote().sendText("Hello client");
    }

    /**
     * @author: kx
     * @date: 2025/9/18 11:23
     * @description: 当客户端连接关闭时调用此方法
    */
    @OnClose
    public void onClose() {
        System.out.println("websocket 连接已关闭");
    }
}
